/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package unc.pds.model;

import java.rmi.RemoteException;
import unc.pds.filemodel.AlbumRemote;
import unc.pds.filemodel.FolderRemote;
import unc.pds.util.Arch;

/**
 *
 * @author ain
 */
public interface IGroup extends Postable {

    public String getName() throws RemoteException;
    public void setName(String nname) throws RemoteException;

    public DiaryRemote[] getDiares() throws RemoteException;
    public void addDiary(Arch doc) throws RemoteException;

    public AlbumRemote[] getAlbums() throws RemoteException;
    public void addAlbum(Arch doc) throws RemoteException;

    public FolderRemote[] getFolders() throws RemoteException;
    public void addFolder(Arch doc) throws RemoteException;

    public void wasInvitedByUser(Long key) throws RemoteException;
    public void sendInviteToUser(Long key) throws RemoteException;
    public void acceptUserInvite(Long key) throws RemoteException;
    public void wasAcceptedByUser(Long key) throws RemoteException;
    public void delcineUserInvite(Long key) throws RemoteException;
    public void wasDeclinedByUser(Long key) throws RemoteException;

    public void removeMember(Long key) throws RemoteException;
    public void wasRemovedFromGroupsBy(Long key) throws RemoteException;

    public void banMember(Long key) throws RemoteException;
    public void unbanMember(Long key) throws RemoteException;

    public void upToModer(Long key) throws RemoteException;
    public void downFromModer(Long key) throws RemoteException;

    public UserRemote[] getMembers() throws RemoteException;
    public UserRemote[] getNewMembers() throws RemoteException;
    public UserRemote[] getBanMembers() throws RemoteException;
    public UserRemote[] getModers() throws RemoteException;

    public boolean isMember(Long key) throws RemoteException;
    public boolean isWantedMember(Long key) throws RemoteException;
    public boolean isNewMember(Long key) throws RemoteException;
    public boolean isBannedMember(Long key) throws RemoteException;
    public boolean isModer(Long key) throws RemoteException;

    public UserRemote getOwner() throws RemoteException;
}
